package com.zhentao.day01.am;

import java.util.Scanner;

public class ExceptionTest {
  public static void saveAge (int  age ) throws AgeException{

  }
  public static void main(String[] args) {

    saveAge(3);



    // 3. 自定义异常
    // 3.1 假设医院需要录入人的年龄。 员工误操作将病人的年龄  110  1100
    Scanner scn = new Scanner(System.in);

    System.out.println("请录入病人的年龄 : ");
    Person per = new Person();

    // / 感觉有问题的代码, 放到try里面
    // 此时, 输入int值不会报错, 所以不能直接用try语句块。 gloable 全局异常
    int age = scn.nextInt();


    per.setAge(age);




    /*if(age > 120){
      throw new am.AgeException("年龄超过120异常");
    }
    if (age <=0){
      throw new am.AgeException("年龄小于0异常");
    }*/

    /*if(age > 120){
      // throw 抛出一个指定的异常对象  new
      throw new am.MaxAgeException();
      // System.err.println("年龄超出范围");
    }
    if (age <=0){
      throw new am.MinAgeException();
    }*/

    System.out.println("程序结束");

    /*try{
      // 感觉有问题的代码, 放到try里面
      // 此时, 输入int值不会报错, 所以不能直接用try语句块。
      int age = scn.nextInt();
    }catch ( e){

    }*/





    /*try {
      return;
    } catch (Exception e) {
      e.printStackTrace();
    }finally {
      System.out.println("finally ... ");
    }*/


    // 2. finally  不论代码是否出问题, 都会去执行的代码
    // 2.2 异常可以同级写多个
    // 2.3 异常可以嵌套
    /*File file = new File("src/test.txt") ;
    System.out.println("file.isFile() = " + file.isFile());
    InputStream is = null ;
    try{
      is = new FileInputStream(file);
      // 1.7 之后, 可以简化实现 catch 体
      // 当前可以 | 的异常必须同级异常 或者 父类异常
      // 如果其有一个父类异常的话, 那么,就没必须将子类再声明出来。
    }catch (NullPointerException | IOException e ){
      e.printStackTrace();
    }finally{
      // 后期会有很多流的运用。可以出异常, 但出异常后, 需要将流关闭。
      try {
        is.close();
      } catch (IOException e) {
        e.printStackTrace();
      }

    }*/

    /*try{

      InputStream is = new FileInputStream(file);
      // 1.7 之后, 可以简化实现 catch 体
    }catch (NullPointerException e ){
      e.printStackTrace();
    }catch (IOException e){
      e.printStackTrace();
    }*/


    // 1. try ~ catch 的基本运用

    /*try{
      Object obj = null;
      System.out.println("obj.toString() = " + obj.toString());
    }catch (NullPointerException e){
      // 实现报错后的业务逻辑
      e.printStackTrace();
      System.out.println("-----------------------------------");
      System.err.println("e.getMessage() = " + e.getMessage()); // err输出是无序
    }*/

    // Thread.sleep(1000);

  }
}